File transfer between clients across a network may be carried out via a server. This may take place in many different environments. The server receives a file from a source client and forwards it to the destination client. When a file is transferred between clients, the server may carry out some form of process on the file. This process may be, for example, a virus check to make sure that the file is safe to forward to the destination client, a confidentiality check to make sure that the destination client is authorized to receive the file, or any other appropriate process.
Some processes that the server carries out before forwarding a file, must be applied to the file as a whole. In many file transfer situations, the file is split into segments due to a size limitation on the maximum block size that can be sent across a communication means. This results in a delay in the server carrying out the process on the file and forwarding it to the destination client. The server must wait for all the segments of the file to arrive from a source client and the server must re-construct the file before the process can be carried out. Once the process has been successfully completed the file must again be split into segments to transfer it to the destination client.
For example, in an instant messaging environment, a file is transferred between two communicating instant messaging clients via an instant messaging server. The server needs to carry out an anti-virus scan on the file before allowing the transfer to the destination client. Many anti-virus (AV) software packages can only authorize a file as a whole, and cannot carry out the scan successfully on segments of a file. The instant messaging server must wait until all the segments arrive at the server before the scan can take place. The delivery of the file to the destination client is postponed until the file is cleared by the scan. This causes a delay in the file transfer.